/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package mailserver;

import LibreriaServer.LServer;
import Persistencia.ArchivoDatos;
import SwConfMessage.Interfaz.IGuardarRecuperar;
import SwConfMessage.Interfaz.IMostrar;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author Marisol
 */
public class Server implements IGuardarRecuperar , IMostrar{

    private ArrayList<String> listaServer;
    private String NameServer;
    
    public Server() {
        listaServer= new ArrayList<>();
        NameServer = "Servidor";
        try {
            String patch = LServer.patchServer();
            ArchivoDatos<Server> archivo = new ArchivoDatos<Server>();
           boolean existe = archivo.existe(patch, NameServer, LServer.Data);
           if (existe){
             recuperar();
             return;
           }
           guardar();
        } catch (Exception ex) {
            Logger.getLogger(Server.class.getName()).log(Level.SEVERE, null, ex);
        }
       
    }
    
//    public String patch (){
//    return (LServer.Pach + LServer.Separador + LServer.Servidor);
//    
//    }

    public ArrayList<String> getListaServer() {
        return listaServer;
    }
    
    
    @Override
    public void guardar() {
        try {
            String Pach = LServer.patchServer();
            ArchivoDatos<Server> binarioServer = new ArchivoDatos();
            binarioServer.guardar(this, Pach, NameServer, LServer.Data);
        } catch (Exception ex) {
            Logger.getLogger(Server.class.getName()).log(Level.SEVERE, null, ex);
        }
//        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }
    
    @Override
    public void recuperar() {
       try {
              String Pach = LServer.patchServer();
            ArchivoDatos<Server> binarioServer = new ArchivoDatos<>();
           Server servidor =  binarioServer.recuperar(Pach, NameServer, LServer.Data);
           this.listaServer = servidor.listaServer;
           
        } catch (Exception ex) {
            Logger.getLogger(MailServer1.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
    
    public int agregarServidor(String nameserver) throws Exception {
        
        if (!LServer.existeString(listaServer, nameserver)) {
            listaServer.add(nameserver);
            MailServer1 Servidor = new MailServer1(nameserver);
//            Servidor.guardar();
            guardar();
            return 0;
        }
        return -1;
    }

    @Override
    public String toString() {
       return LServer.Imprimir(listaServer);
    }
    
}
